package org.japo.java.swing.igu;


import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.HeadlessException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import org.japo.java.swing.listeners.GEA;
import org.japo.java.swing.listeners.GEC;

public class IGU extends JFrame {

    //Componentes del panel principal
    private JLabel lblColor;
    private JTextField txtColor;
    private JSlider sldColor;
    


    //Valores de la fuente
    Font f = new Font("Segoe Print", Font.BOLD + Font.ITALIC, 16);

    // Recurso con la imagen de fondo del panel
    private final String RES_PKG = "/org/japo/java/resources/img";
    private final String RES_IMG = "degrad.jpg";
    private final String RECURSO = RES_PKG + "/" + RES_IMG;

    //Configurar Slider
    private final int COLOR_MINIMO = 0;
    private final int COLOR_MAXIMO = 255;
    private final int PASO_MENOR = 10;
    private final int PASO_MAYOR = 50;
    private final int VALOR_INICIO = 130;

    public IGU() throws HeadlessException {
        iniciarComponentes();

    }

    private void iniciarComponentes() {
        // Borde principal
        Border brdPrincipal = new EmptyBorder(10, 10, 10, 10);
        Border border = new BevelBorder(BevelBorder.LOWERED);

        JPanel pnlPrincipal = new JPanel();
        pnlPrincipal.setOpaque(true);
        pnlPrincipal.setBorder(brdPrincipal);

        //Gestor de eventos de cambio
        GEC gec = new GEC(this);
        
        //Label para cambio de color
        lblColor = new JLabel();
        lblColor.setPreferredSize(new Dimension(40, 40));
        lblColor.setBackground(new Color(VALOR_INICIO, VALOR_INICIO, VALOR_INICIO));
        lblColor.setBorder(border);
        lblColor.setOpaque(true);
        pnlPrincipal.add(lblColor);
        
        //Dimensiones
        Dimension dimSlider = new Dimension(300, 70);

        //Slider
        sldColor = new JSlider();
        sldColor.setMinimum(COLOR_MINIMO);
        sldColor.setMaximum(COLOR_MAXIMO);
        sldColor.setValue(VALOR_INICIO);
        sldColor.setFont(f);
        sldColor.setPaintLabels(true);
        sldColor.setPaintTicks(true);
        sldColor.setMinorTickSpacing(PASO_MENOR);
        sldColor.addChangeListener(gec);
        sldColor.setOpaque(true);
        sldColor.setSize(dimSlider);
        sldColor.setLocation(10, 10);
        pnlPrincipal.add(sldColor);


        //Gestor de eventos de accion
        GEA gea = new GEA(this);

    
      
        //Etiqueta campo de texto para cambio de color
        txtColor = new JTextField("50");
        txtColor.setLocation(110, 70);
        txtColor.setFont(f);
        txtColor.addActionListener(gea);
        pnlPrincipal.add(txtColor);


        // Ventana principal
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Cambia Colores");
        setContentPane(pnlPrincipal);
        setResizable(false);
        setSize(500, 210);
        setLocationRelativeTo(null);
    }

    public void procesarCambioColor() {
        int color;

        if (txtColor.isCursorSet()) {
            color = sldColor.getValue();
            Color colorFondo = new Color(color, color, color);
            lblColor.setBackground(colorFondo);
        } else {
            color = sldColor.getValue();
            Color colorFondo = new Color(color, color, color);
            txtColor.setBackground(colorFondo);
        }
       
    }
}
